package cn.iocoder.yudao.module.crossborder.finance.service;

import cn.iocoder.yudao.module.crossborder.finance.api.dto.ExchangeRateDTO;
import cn.iocoder.yudao.module.crossborder.finance.api.dto.SettlementDTO;

import java.math.BigDecimal;
import java.util.List;

/**
 * 财务结算管理 Service 接口
 *
 * @author LHL
 */
public interface FinanceService {

    /**
     * 获得财务结算记录
     *
     * @param id 编号
     * @return 财务结算记录
     */
    SettlementDTO getSettlement(Long id);

    /**
     * 获得财务结算记录列表
     *
     * @param ids 编号列表
     * @return 财务结算记录列表
     */
    List<SettlementDTO> getSettlementList(List<Long> ids);

    /**
     * 创建财务结算记录
     *
     * @param settlement 财务结算记录
     * @return 编号
     */
    Long createSettlement(SettlementDTO settlement);

    /**
     * 获取汇率
     *
     * @param fromCurrency 源货币
     * @param toCurrency 目标货币
     * @return 汇率信息
     */
    ExchangeRateDTO getExchangeRate(String fromCurrency, String toCurrency);

    /**
     * 计算费用
     *
     * @param orderId 订单编号
     * @param feeType 费用类型
     * @return 费用金额
     */
    BigDecimal calculateFee(Long orderId, Integer feeType);

    /**
     * 处理结算
     *
     * @param orderId 订单编号
     * @return 是否成功
     */
    Boolean processSettlement(Long orderId);

}
